package utils

import (
	"os"
	"time"

	"github.com/rs/zerolog"
	"github.com/rs/zerolog/log"
	"gopkg.in/natefinch/lumberjack.v2"
)

// 全局变量用于日志
var Logger *zerolog.Logger

// SetupLogger 初始化 zerolog + lumberjack 日志
func SetupLogger(debug bool) {
	// 配置 lumberjack 用于日志切割
	lumberjackHook := &lumberjack.Logger{
		Filename:   "logs/frigate.log", // 日志输出文件路径
		MaxSize:    2,                  // 每个文件最大 2 MB
		MaxBackups: 5,                  // 最多保留 5 个旧文件
		MaxAge:     30,                 // 文件最长保留 30 天
		Compress:   false,              // 启用压缩（gzip）
		LocalTime:  true,               // 使用本地时间而非 UTC
	}

	// 开发环境使用 ConsoleWriter 输出可读格式
	multiWriter := zerolog.MultiLevelWriter(
		lumberjackHook,
		zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339},
	)

	// 设置 zerolog 的全局 logger
	zerolog.TimeFieldFormat = time.DateTime
	zerolog.SetGlobalLevel(zerolog.InfoLevel)
	if debug {
		zerolog.SetGlobalLevel(zerolog.DebugLevel)
	}

	log.Logger = zerolog.New(multiWriter).With().Timestamp().Logger()
	Logger = &log.Logger

	// 示例日志
	Logger.Info().Msg("Logger initialized.")
}
